﻿// 868. 筛质数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

using namespace std;

/*
https://www.acwing.com/problem/content/870/

给定一个正整数 n，请你求出 1∼n 中质数的个数。

输入格式
共一行，包含整数 n。

输出格式
共一行，包含一个整数，表示 1∼n 中质数的个数。

数据范围
1≤n≤106
输入样例：
8
输出样例：
4
*/

//const int N = 1000010;
//int primes[N], cnt;
//bool st[N];
//int n;
//
//void get_primes(int n) {
//	cnt = 0;
//	for (int i = 2; i <= n; i++) {
//		if (st[i])continue;
//		primes[cnt++] = i;
//		for (int j = i; j <= n; j += i) {
//			st[j] = true;
//		}
//	}
//	return;
//}
//
//int main()
//{
//	cin >> n;
//
//	get_primes(n);
//	cout << cnt << endl;
//
//	return 0;
//}

const int N = 1000010;
int primes[N], cnt;
bool st[N];

void get_primes(int n) {
	for (int i = 2; i <= n; i++) {
		if (!st[i]) primes[cnt++] = i;
		for (int j = 0; primes[j] <= n / i; j++) {
			st[primes[j] * i] = true;
			if (i % primes[j] == 0) break;
		}
	}
}
 


int n;
int main()
{
	cin >> n;

	get_primes(n);
	cout << cnt << endl;

	return 0;
}